package com.constructor;

/**
 * Time    : 2023/3/19 15:57
 * Author  : 王摇摆
 * FileName: s.java
 * Software: IntelliJ IDEA 2020.2.2
 * Blog    ：https://blog.csdn.net/weixin_44943389?type=blog
 */

public class Test02 {
    public static void main(String[] args) {
        //根据无参构造方法创建对象，肯定会调用无参构造方法！
        new B1();
    }
}

class A1 { //默认继承Object类，class A extends Object
    // 建议手动的将一个类的无参数构造方法写出来。
    public A1() { //无参构造方法
        //这里也默认有super()，调用的是Object的无参构造方法
        System.out.println("调用A的无参构造方法！");
    }

    public A1(int i) { //有参构造方法
        //这里也默认有super()，调用的是Object的无参构造方法
        System.out.println("调用A的有参构造方法！");
    }
}

class B1 extends A1 {
    public B1() { //无参构造方法
        //通过this去调用B1的有参构造方法；而B1的有参构造方法默认也有super()!
        this("张三");
        System.out.println("调用B的无参构造方法！");
    }

    public B1(String name) { //有参构造方法
        //默认也有super()，去调用A的无参构造
        System.out.println("调用B的有参构造方法！");
    }
}
//最终结果
/*
调用A的无参构造方法！
调用B的有参构造方法！
调用B的无参构造方法！
*/